package cn.itsource.crm.web.controller;

import cn.itsource.crm.domain.ContractPaymentDetails;
import cn.itsource.crm.query.ContractPaymentDetailsQuery;
import cn.itsource.crm.service.IContractPaymentDetailsService;
import cn.itsource.util.AjaxResult;
import cn.itsource.util.PageList;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Controller
@RequestMapping("/contractPaymentDetails")
@CrossOrigin//解决跨域问题
public class ContractPaymentDetailsController {

    @Autowired
    private IContractPaymentDetailsService contractPaymentDetailsService;

    /**
     * 查询所有数据信息
     * @return
     */
    @RequestMapping(value = "/list",method = RequestMethod.PATCH)//批量查询用PATCH
    @ResponseBody
    @ApiOperation(value = "list查询所有方法",notes = "查询所有合同明细信息")
    //HTTP响应整体描述
    @ApiResponses({
            //HTTP响应其中1个描述
            @ApiResponse(code = 200,message = "成功"),
            @ApiResponse(code = 500,message = "网络错误，请稍后")
    })
    public List<ContractPaymentDetails> list(){
        System.out.println("patch请求，获取所有数据" +contractPaymentDetailsService.findAll());
        return contractPaymentDetailsService.findAll();
    }
    /**
     * 查询对应合同的明细
     * @return
     */
    @RequestMapping(value = "/findByContractId/{contractId}",method = RequestMethod.GET)//根据合同id查询明细
    @ResponseBody
    @ApiOperation(value = "findByContractId",notes = "根据合同id查询明细")
    //HTTP响应整体描述
    @ApiResponses({
            //HTTP响应其中1个描述
            @ApiResponse(code = 200,message = "成功"),
            @ApiResponse(code = 500,message = "网络错误，请稍后")
    })
    public List<ContractPaymentDetails> findByContractId(@PathVariable Long contractId){
        System.out.println("patch请求，获取所有数据" +contractPaymentDetailsService.findByContractId(contractId));
        return contractPaymentDetailsService.findByContractId(contractId);
    }

    @RequestMapping(value = "/queryPage",method = RequestMethod.PATCH)
    @ResponseBody
    @ApiOperation(value = "queryPage查询分页信息")
    @ApiResponses({
            @ApiResponse(code = 200,message = "查询成功"),
            @ApiResponse(code = 500,message = "查询失败")
    })
    @ApiImplicitParam(name = "contractPaymentDetailsQuery",dataType = "ContractPaymentDetailsQuery",paramType = "path")
    public PageList<ContractPaymentDetails> queryPage(@RequestBody ContractPaymentDetailsQuery contractPaymentDetailsQuery){
        return contractPaymentDetailsService.queryPage(contractPaymentDetailsQuery);
    }


    /**
     * 根据id查询单个合同明细信息
     * @param id
     * @return
     */
    @RequestMapping(value = "/findOne/{id}",method = RequestMethod.GET)//查询单个用GET
    @ResponseBody
    //描述一个类的一个方法，或者说一个接口
    @ApiOperation(value = "根据id查询合同明细信息",notes = "getOne查询方法")
    //一个请求参数
    @ApiImplicitParam(name = "id",value = "id参数",required = true,dataType = "Long",paramType = "path")
    public ContractPaymentDetails findOne(@PathVariable Long id){
        System.out.println("通过id获取单个对象--  " + id);

        return contractPaymentDetailsService.findOne(id);
    }

    /**
     * 保存合同明细信息
     * @param contractPaymentDetails
     * @return
     */
    @RequestMapping(value = "/save",method = RequestMethod.PUT)//保存用PUT
    @ResponseBody
    @ApiOperation(value = "save保存合同明细信息的方法",notes = "保存合同明细信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "contractPaymentDetails",value = "contractPaymentDetails对象",dataType = "ContractPaymentDetails",paramType = "path")
    })
    @ApiResponses({
            @ApiResponse(code = 200,message = "保存成功"),
            @ApiResponse(code = 500,message = "服务器错误")
    })
    public AjaxResult save(@RequestBody ContractPaymentDetails contractPaymentDetails){
        try {
            contractPaymentDetailsService.save(contractPaymentDetails);
            System.out.println("保存成功"+contractPaymentDetails);
            return new AjaxResult();
        } catch (Exception e) {
            e.printStackTrace();
            return new AjaxResult(false);
        }
    }

    /**
     * 更新合同明细信息
     * @param contractPaymentDetails
     * @return
     */
    @RequestMapping(value = "/update",method = RequestMethod.POST)//POST用来修改信息
    @ResponseBody
    @ApiResponses({
            @ApiResponse(code = 200,message = "更新成功"),
            @ApiResponse(code = 500,message = "网络错误...")
    })
    @ApiImplicitParams({
            @ApiImplicitParam(name = "contractPaymentDetails合同明细信息",value = "合同明细信息",dataType = "ContractPaymentDetails",paramType = "path")
    })
    public AjaxResult update(@RequestBody ContractPaymentDetails contractPaymentDetails){
        try {
            contractPaymentDetailsService.update(contractPaymentDetails);
            System.out.println("更新成功");
            return new AjaxResult();
        } catch (Exception e) {
            e.printStackTrace();
            return new AjaxResult(false);
        }
    }


    @RequestMapping(value = "/delete/{id}",method = RequestMethod.DELETE)//DELETE删除合同明细信息
    @ResponseBody
    @ApiResponses({
            @ApiResponse(code = 200,message = "删除成功"),
            @ApiResponse(code = 500,message = "服务器异常")
    })
    @ApiImplicitParams({
            @ApiImplicitParam(name = "参数id",value = "参数id",dataType = "Long",paramType = "path",required = true)
    })
    @ApiOperation(value = "delete删除方法",notes = "删除合同明细信息")
    public AjaxResult delete(@PathVariable Long id){
        try {
            contractPaymentDetailsService.delete(id);
            System.out.println("删除成功");
            return new AjaxResult();
        } catch (Exception e) {
            e.printStackTrace();
            return new AjaxResult(false);
        }
    }
}
